﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

using System.Collections.Generic;

/// <summary>
/// UserGroupComponent 用户组控制层
/// </summary>
public class UserGroupComponent
{
	private UserGroupDB clsData;

	#region 构造函数
	public UserGroupComponent()
	{
		clsData = new UserGroupDB();
	}
	#endregion

	/**********************************************************************************************
	 ** 功能描述：	把数据库中的列映射到实体对象
	 ** 输入参数：	查询结果的一行数据
	 ** 输出参数：	clsUserGroup
	 ** 返回值：	一个用户组实体
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-23
	 ** 备注：
	 *********************************************************************************************/
	private UserGroup DatabaseToEntity(DataRow dr)
	{
		UserGroup clsUserGroup;
		ColumnComponent clsColumnComp;
		List<Column> listColumn;

		clsUserGroup = new UserGroup();
		clsColumnComp = new ColumnComponent();
		listColumn = new List<Column>();

		if (dr != null)
		{
			clsUserGroup.UserGroupID		= Convert.ToInt32(dr["UserGroup_ID"]);		// 用户组ID
			clsUserGroup.UserGroupName		= dr["UserGroup_Name"].ToString();		// 用户组名称
			clsUserGroup.UserGroupColumnsID		= dr["UserGroup_ColumnsID"].ToString();		// 用户组所具有访问权限的栏目ID

			listColumn = clsColumnComp.QueryByColumnIDsOrderGrade(clsUserGroup.UserGroupColumnsID, "");
			for (int i = 0; i < listColumn.Count; i++)
			{
				clsUserGroup.UserGroupColumns = clsUserGroup.UserGroupColumns + listColumn[i].Name + ",";
				
			}
			clsUserGroup.UserGroupColumns = CommonFunction.ExceptString(",", clsUserGroup.UserGroupColumns);
		}

		return clsUserGroup;
	}

	/**********************************************************************************************
	 ** 功能描述：	把用户组实体对象映射到数据库中
	 ** 输入参数：	clsUserGroup		用户组实体对象
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-23
	 ** 备注：
	 *********************************************************************************************/
	private void EntityToDatabase(UserGroup clsUserGroup)
	{
		clsData.arrTableColumnValue[0] = clsUserGroup.UserGroupID.ToString();			// 用户组ID
		clsData.arrTableColumnValue[1] = clsUserGroup.UserGroupName;				// 用户组名称
		clsData.arrTableColumnValue[3] = clsUserGroup.UserGroupColumnsID;			// 有权限的栏目ID
	}

	#region 添加、修改、删除
	/**********************************************************************************************
	 ** 功能描述：	添加一个用户组
	 ** 输入参数：
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-23
	 ** 备注：
	 *********************************************************************************************/
	public Boolean Add(UserGroup clsUserGroup)
	{
		EntityToDatabase(clsUserGroup);
		return clsData.Add();
	}

	/**********************************************************************************************
	 ** 功能描述：	修改一个用户组
	 ** 输入参数：
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-23
	 ** 备注：
	 *********************************************************************************************/
	public Boolean Modify(UserGroup clsUserGroup)
	{
		EntityToDatabase(clsUserGroup);
		return clsData.Modify();
	}

	/**********************************************************************************************
	 ** 功能描述：	删除一个用户组
	 ** 输入参数：
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-23
	 ** 备注：
	 *********************************************************************************************/
	public Boolean Delete(UserGroup clsUserGroup)
	{
		EntityToDatabase(clsUserGroup);
		return clsData.Delete();
	}
	#endregion

	#region 查询
	/**********************************************************************************************
	 ** 功能描述：	根据用户组ID查询用户组实体对象
	 ** 输入参数：	nID		用户组ID
	 ** 输出参数：
	 ** 返回值：	用户组实体对象
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-23
	 ** 备注：
	 *********************************************************************************************/
	public UserGroup GetOneByID(int nID)
	{
		UserGroup clsUserGroup;
		DataRow dr;

		clsUserGroup = new UserGroup();

		dr = clsData.QueryOneToDataRow(nID);
		if (dr != null)
		{
			clsUserGroup = DatabaseToEntity(dr);
		}

		return clsUserGroup;
	}

	/**********************************************************************************************
	 ** 功能描述：	根据用户组ID查询一个用户组，返回由这个用户组组成的List
	 ** 输入参数：	nID		用户组ID
	 ** 输出参数：
	 ** 返回值：	有用户组实体组成的List
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-23
	 ** 备注：
	 *********************************************************************************************/
	public List<UserGroup> QueryByID(int nID)
	{
		UserGroup clsUserGroup;
		List<UserGroup> list;

		clsUserGroup = new UserGroup();
		list = new List<UserGroup>();

		clsUserGroup = GetOneByID(nID);
		list.Add(clsUserGroup);

		return list;
	}

	/**********************************************************************************************
	 ** 功能描述：	查询所有的用户组
	 ** 输入参数：
	 ** 输出参数：
	 ** 返回值：
	 ** 作者：	Tony Mucor
	 ** 日期：	2013-07-23
	 ** 备注：
	 *********************************************************************************************/
	public List<UserGroup> QueryAll()
	{
		DataTable dt;
		List<UserGroup> list;

		list = new List<UserGroup>();

		dt = clsData.QueryAllToDataTable();
		foreach (DataRow dr in dt.Rows)
		{
			list.Add(DatabaseToEntity(dr));
		}

		return list;
	}

	

	#endregion
}
